﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Bussiness.Entity;
using Bussiness.Manager;
namespace DSC
{
    public partial class frmAgentDetail :AfChildrenForm
    {
        public string infoBeforeChange { set; get; }
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == Keys.Escape) // thoat
            {
                this.Close();
                return true;
            }
            if (keyData == Keys.F5) // Luu thong tin
            {
                if (btnSave.Enabled == true)
                    SaveInfo();
                else
                    MessageBox.Show("Bạn không có quyền thực hiện chức năng này");
                return true;
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }
        private void SaveInfo()
        {
            if (CheckInput())
            {
                PT_AccountEntity obj = new PT_AccountEntity();
                obj.UserCode = txtUserName.Text.Trim();
                obj.UserName = txtFullName.Text.Trim();
                obj.DOB = txtDOB.Value;
                obj.Address = txtAddress.Text.Trim();
                obj.RoleId = int.Parse(ddlRules.SelectedValue.ToString());
                obj.DEALER_CODE = ddlHead.SelectedValue.ToString();
                obj.IsActive = checkActive.Checked;
                obj.IsDeleted = false;
                obj.IsSystem = true;
                if (UserID == 0)
                {
                    obj.Password = txtpassword.Text.Trim();
                    obj.CreatedBy = SessionLogin.UserCode;
                    obj.CreatedDate = DateTime.Now;
                    if (PT_AccountManager.CreateInstant().Insert(obj) != null)
                    {
                        MessageBox.Show("Thêm nhân viên thành công");
                        RaiseChangeDataEvent();
                        // history
                        PT_ActionHistoryManager.CreateInstant().SaveHistory(SessionLogin.UserId, "Thêm user hệ thống", GetInfo());
                    }
                    else
                    {
                        MessageBox.Show("Thêm nhân viên không thành công. Vui lòng thử lại");
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(txtpassword.Text.Trim()) && txtpassword.Text.Trim() == txtConfirm.Text.Trim())
                    {
                        obj.Password = txtpassword.Text.Trim();
                    }
                    obj.UserID = UserID;
                    obj.UpdatedBy = SessionLogin.UserCode;
                    obj.UpdatedDate = DateTime.Now;
                    if (PT_AccountManager.CreateInstant().Update(obj) != null)
                    {
                        MessageBox.Show("Cập nhật thông tin nhân viên thành công");
                        RaiseChangeDataEvent();
                        // history
                        PT_ActionHistoryManager.CreateInstant().SaveHistory(SessionLogin.UserId, "Sửa thông tin user hệ thống", infoBeforeChange + " ---- " + GetInfo());
                    }
                    else
                    {
                        MessageBox.Show("Cập nhật thông tin nhân viên không thành công. Vui lòng thử lại");
                    }
                }
            }
        }
        public frmAgentDetail()
        {
            InitializeComponent();
            LoadHead();
            LoadRules();
        }
        public int UserID { set; get; }
        public frmAgentDetail(int _UserID)
        {
            UserID = _UserID;
            InitializeComponent();
            LoadHead();
            LoadRules();
            if (_UserID != 0)
            {
                PT_AccountEntity obj = PT_AccountManager.CreateInstant().GetByID(_UserID);
                if (obj != null)
                {
                    if(obj.DEALER_CODE!=null)
                        ddlHead.SelectedValue = obj.DEALER_CODE;
                    txtUserName.Text = obj.UserCode;
                    txtUserName.Enabled = false;
                    txtFullName.Text = obj.UserName;
                    txtDOB.Value = obj.DOB;
                    txtAddress.Text = obj.Address;
                    ddlRules.SelectedValue = obj.RoleId;
                    checkActive.Checked = obj.IsActive;
                }
            }
            infoBeforeChange = GetInfo();
        }
        private void LoadHead()
        {
            List<DMS002Entity> lst = DMS002Manager.CreateInstant().SelectAllLST();
            ddlHead.DataSource = lst;
            ddlHead.ValueMember = "DEALER_CODE";
            ddlHead.DisplayMember = "SHORT_NAME";
            ddlHead.SelectedText = "";
            ddlHead.Text = "[Chọn HEAD]";
        }
        private void LoadRules()
        {
            List<PT_RoleEntity> lst = PT_RoleManager.CreateInstant().SelectAllLST();
            ddlRules.DataSource = lst;
            ddlRules.ValueMember = "RoleId";
            ddlRules.DisplayMember = "RoleName";
            ddlRules.SelectedText = "";
            ddlRules.Text = "[Chọn quyền]";
        }
        private bool CheckInput()
        {
            string error = "";
            if (ddlHead.SelectedValue == null || (ddlHead.SelectedValue != null && ddlHead.SelectedValue.ToString() == ""))
            {
                error += "- Head\r\n";
            }
            if (string.IsNullOrEmpty(txtUserName.Text.Trim()))
            {
                error += "- Tên đăng nhập\r\n";
            }
            if (UserID==0 && string.IsNullOrEmpty(txtpassword.Text.Trim()))
            {
                error += "- Mật khẩu\r\n";
            }
            if (UserID == 0 && string.IsNullOrEmpty(txtConfirm.Text.Trim()))
            {
                error += "- Xác nhận mật khẩu\r\n";
            }
            if (string.IsNullOrEmpty(txtFullName.Text.Trim()))
            {
                error += "- Họ và tên\r\n";
            }
            //if (string.IsNullOrEmpty(txtAddress.Text.Trim()))
            //{
            //    error += "- Địa chỉ\r\n";
            //}
            if (ddlRules.SelectedValue == null || (ddlRules.SelectedValue != null && ddlRules.SelectedValue.ToString() == ""))
            {
                error += "- Quyền\r\n";
            }
            if (!string.IsNullOrEmpty(error))
            {
                MessageBox.Show("Vui lòng điền đầy đủ các thông tin sau:\r\n" + error);
                return false;
            }
            //PT_AccountEntity option = new PT_AccountEntity();
            //option.UserCode = txtUserName.Text.Trim();
            //option.IsDeleted = false;
            //if (PT_AccountManager.CreateInstant().SelectWithCondition(option).Rows.Count > 0)
            //{
            //    MessageBox.Show("Tên đăng nhập đã có người sử dụng. Vui lòng chọn tên khác");
            //    return false;
            //}
            List<PT_AccountEntity> lst= PT_AccountManager.CreateInstant().SelectByUserCodeLST(txtUserName.Text.Trim());
            if (lst!=null && lst.Count > 0)
            {
                if (lst[0].UserID != UserID)
                {
                    MessageBox.Show("Tên đăng nhập đã có người sử dụng. Vui lòng chọn tên khác");
                    return false;
                }
            }
            
            if (txtpassword.Text != txtConfirm.Text)
            {
                MessageBox.Show("Mật khẩu và mật khẩu xác nhận không khớp. Vui lòng nhập lại");
                return false;
            }
            if (txtDOB.Value >= DateTime.Now)
            {
                MessageBox.Show("Ngày sinh không thể nhỏ hơn hoặc bằng ngày hiện tại. Vui lòng nhập lại");
                return false;
            }
            if (txtDOB.Value <= new DateTime(1753,1,1))
            {
                MessageBox.Show("Ngày sinh không hợp lệ, lớn hơn 1-1-1753");
                return false;
            }
            return true;
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            SaveInfo();
        }
        private string GetInfo()
        {
            string info = "";
            info += "Head:" + ddlHead.Text + "\nTên đăng nhập:" + txtUserName.Text.Trim() + "\nHọ tên:" + txtFullName.Text + "\nNgày sinh:" + txtDOB.Value.ToString("dd/MM/yyyy") + "\nĐịa chỉ:" + txtAddress.Text + "\nQuyền:" + ddlRules.Text + "\nTình trạng:" + (checkActive.Checked == true ? "Hoạt động" : "Không hoạt động");
            return info;
        }
    }
}
